package com.xxxy.ljh.myapplication.activity;

import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.xxxy.ljh.myapplication.Dao.ClubDao;
import com.xxxy.ljh.myapplication.DaoImpl.ClubDaoImpl;
import com.xxxy.ljh.myapplication.R;
import com.xxxy.ljh.myapplication.model.Club;

/**
 * 社团审核详情页面
 * <p>
 * 此 Activity 展示待审核社团的详细信息，并提供审核通过或拒绝的功能。
 * 用户可查看社团名称、描述等基本信息，并进行审批操作。
 */
public class ClubAuditDetailActivity extends AppCompatActivity {
    private TextView tvClubName, tvClubDescription, tvClubContact, tvClubEmail;
    private ImageView ivClubLogo;
    private Button btnApprove, btnReject;

    private ClubDao clubDao;
    private Club currentClub;

    /**
     * Activity 创建时调用的方法
     *
     * @param savedInstanceState 保存的状态数据
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_club_audit_detail);

        initViews();
        clubDao = new ClubDaoImpl(this);

        // 获取传递过来的社团ID并加载社团信息
        int clubId = getIntent().getIntExtra("club_id", -1);
        if (clubId != -1) {
            loadClubDetails(clubId);
        } else {
            Toast.makeText(this, "无效的社团信息", Toast.LENGTH_SHORT).show();
            finish();
        }

        setupClickListeners();
    }

    /**
     * 初始化界面控件引用
     */
    private void initViews() {
        tvClubName = findViewById(R.id.tvClubName);
        tvClubDescription = findViewById(R.id.tvClubDescription);
        tvClubContact = findViewById(R.id.tvClubContact);
        tvClubEmail = findViewById(R.id.tvClubEmail);
        ivClubLogo = findViewById(R.id.ivClubLogo);
        btnApprove = findViewById(R.id.btnApprove);
        btnReject = findViewById(R.id.btnReject);
    }

    /**
     * 根据社团ID加载社团详细信息
     *
     * @param clubId 社团唯一标识符
     */
    private void loadClubDetails(int clubId) {
        currentClub = clubDao.getClubById(clubId);
        if (currentClub != null) {
            displayClubDetails(currentClub);
        } else {
            Toast.makeText(this, "未找到社团信息", Toast.LENGTH_SHORT).show();
            finish();
        }
    }

    /**
     * 在界面上展示指定社团的信息
     *
     * @param club 要显示的社团对象
     */
    private void displayClubDetails(Club club) {
        tvClubName.setText(club.getName());
        tvClubDescription.setText(club.getDescription());
        // 注意：由于数据库表结构中没有联系方式字段，这里暂时使用固定值
        tvClubContact.setText("联系方式: 暂无");
        tvClubEmail.setText("邮箱: 暂无");

        // 加载Logo图片
        if (club.getLogo() != null && !club.getLogo().isEmpty()) {
            ivClubLogo.setImageURI(Uri.parse(club.getLogo()));
        }
    }

    /**
     * 设置按钮点击监听器
     */
    private void setupClickListeners() {
        btnApprove.setOnClickListener(v -> {
            approveClub();
        });

        btnReject.setOnClickListener(v -> {
            rejectClub();
        });
    }

    /**
     * 审核通过当前社团
     */
    private void approveClub() {
        if (currentClub != null) {
            // 使用默认管理员ID 1
            if (clubDao.auditClub(currentClub.getId(), 1, 1, "审核通过")) {
                Toast.makeText(this, "社团审核通过", Toast.LENGTH_SHORT).show();
                setResult(RESULT_OK);
                finish();
            } else {
                Toast.makeText(this, "审核失败", Toast.LENGTH_SHORT).show();
            }
        }
    }

    /**
     * 拒绝当前社团的申请
     */
    private void rejectClub() {
        if (currentClub != null) {
            // 使用默认管理员ID 1
            if (clubDao.auditClub(currentClub.getId(), 2, 1, "审核拒绝")) {
                Toast.makeText(this, "已拒绝社团申请", Toast.LENGTH_SHORT).show();
                setResult(RESULT_OK);
                finish();
            } else {
                Toast.makeText(this, "操作失败", Toast.LENGTH_SHORT).show();
            }
        }
    }
}
